链表的回文结构
对于一个链表，请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法，判断其是否为回文结构。

给定一个链表的头指针A，请返回一个bool值，代表其是否为回文结构。保证链表长度小于等于900。


struct ListNode* reverseList(struct ListNode* head)
{
    if(head==NULL)
    {
        return NULL;
    }

    struct ListNode*n1,*n2,*n3;
    n1=NULL;
    n2=head;
    n3=head->next;
    while(n2)
    {
        n2->next=n1;
        n1=n2;
        n2=n3;
        if(n3)
        {
            n3=n3->next;   
        }
    }
    return n1;

}

struct ListNode* middleNode(struct ListNode* head)
{
    struct ListNode* slow=head;
    struct ListNode* fast=head;

    while(fast&&fast->next)
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;

}
class PalindromeList {
public:



    bool chkPalindrome(ListNode* phead) 
    {
        ListNode*mid=middleNode(phead);
        ListNode*rmid=reverseList(mid);

        while(rmid)
        {
            if(phead->val!=rmid->val)
            {
                return false;
            }
            else 
            {
                phead=phead->next;
                rmid=rmid->next;
            }
        }
        return true;;
        // write code here
    }
};